﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Threading;

namespace covjece
{
    public class PlaviIgrac : Igrac, Handler
    {           //i ovdje moze singltone
        private Handler _sljedeci;
        public static int piunaUIgri = 0;

        public PlaviIgrac(MainWindow m)
        {
            this.m = m;
            piunaUIgri = 0;
            for (int i = 0; i < 4; i++)
            {
                _piuni.Add(new plaviKrug(m));
                m.staviNaPocetno(_piuni[i], i);
                (_piuni[i] as plaviKrug).pozicijaUKuci = i;
            }

        }

        public void postaviSljedeceg(Handler sljedeci)
        {
            _sljedeci = sljedeci;
        }


        public void igraj()
        {

            //bacanje kocke itd...



            plaviKrug krug = null;
            foreach (UserControl u in _piuni)
            {
                plaviKrug pom = u as plaviKrug;
                if (pom.aktivan == true)
                {
                    krug = pom;
                    (u as plaviKrug).aktivan = false;
                    
                }
            }
             try
            {

                if (Igrac.odigrao == false)
                {
                    
                    if (krug != null && krug._upravljanje.dajStanje() == "cekaj" && brojPomjeranja == 6)
                    {
                        piunaUIgri++;
                        krug._upravljanje.postaviStanje(new Ubaci());
                        krug._upravljanje.radi();
                        (krug._upravljanje.piun as plaviKrug).pozicija = 20;
                        krug._upravljanje.postaviStanje(new Pomjeri());
                    }


                    else if (krug != null && krug._upravljanje.dajStanje() == "pomjeri" && (!(krug.pozicija + brojPomjeranja >= 20 && krug.pozicija + brojPomjeranja < 26) || krug.prosaoPola == false) && krug.uKucici == false)
                    {
                        krug._upravljanje.radi();
                        if (krug.pozicija < 20) krug.prosaoPola = true;
                    }


                    else if (krug != null && krug._upravljanje.dajStanje() == "pomjeri" && (krug.pozicija + brojPomjeranja) >= 20 && (krug.pozicija + brojPomjeranja) < 26 && krug.prosaoPola == true && krug.uKucici == false)
                    {
                       
                        int pom = krug.pozicija + brojPomjeranja - 19;
                        brojPomjeranja = brojPomjeranja - pom;
                        krug._upravljanje.radi();

                        krug._upravljanje.postaviStanje(new UbaciUKucu());
                        brojPomjeranja = pom - 1;
                        krug._upravljanje.radi();
                        krug.uKucici = true;
                        krug.pozicija = pom;
                    }
                    else if (krug != null && krug.uKucici == false)
                    {
                        if (piunaUIgri == 1) m.postaviDugme(true);
                        else m.postaviDugme(false);
                    }
                    else if (krug != null && krug.uKucici == true)
                    {
                        if (Igrac.brojPomjeranja + krug.pozicija < 5)
                        {
                            Igrac.brojPomjeranja = krug.pozicija + Igrac.brojPomjeranja - 1;
                            krug._upravljanje.radi();
                        }
                    }
                }
                if (krug != null)
                    Igrac.odigrao = true;
               
            }
            catch (Exception ex)
            {
                global::System.Windows.MessageBox.Show(ex.Message);
            }



            Thread.Sleep(40);

            if (!Aplikacija.gotovo) _sljedeci.igraj();

        }
    }
}
